//package com.pukka.hymc.guava;
//
//import java.io.File;
//import java.io.IOException;
//import java.lang.reflect.Field;
//import java.util.Arrays;
//import java.util.Collection;
//import java.util.List;
//import java.util.Map;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//import java.util.zip.ZipEntry;
//import java.util.zip.ZipOutputStream;
//
//import org.springframework.util.StringUtils;
//
//import com.google.common.base.Charsets;
//import com.google.common.base.Function;
//import com.google.common.base.Joiner;
//import com.google.common.base.Predicate;
//import com.google.common.base.Splitter;
//import com.google.common.collect.ImmutableList;
//import com.google.common.collect.Lists;
//import com.google.common.collect.Maps;
//import com.google.common.io.Files;
//import com.google.common.primitives.Ints;
//
///**
// * @author haitao.wang
// *
// */
//public class TestOfGuava {
//
//	/**
//	 * @param args
//	 * @throws IOException
//	 * @throws SecurityException
//	 * @throws NoSuchFieldException
//	 * @throws IllegalAccessException
//	 * @throws IllegalArgumentException
//	 */
//	public static void main(String[] args) throws IOException, NoSuchFieldException, SecurityException,
//			IllegalArgumentException, IllegalAccessException {
//
//		List<Animal> animals = Lists.newArrayList();
//
//		Animal animal = new Animal("l1", "s1");
////		// Get the private field.
//		Field field = animal.getClass().getDeclaredField("look");
//		Field.setAccessible(new Field[] { field }, true);
//		String k = (String) field.get(animal);
//
//
//
//		print("ttttttttttttttttt" + k);
//		animals.add(animal);
//		animals.add(new Animal("l2", "s2"));
//		animals.add(new Animal("l3", "s3"));
//
//		/* guava transform */
//		List<People> animals2 = Lists.transform(animals, new Function<Animal, People>() {
//
//			public People apply(Animal input) {
//				People people = new People(input.getLook(), 434);
//				return people;
//			}
//
//		});
//
//
//
//
//		for (People people : animals2) {
//			System.out.println(people.getName());
//			System.out.println(people.getAge());
//		}
//
//		Animal animall = animals.stream().filter(a -> "l1".equals(a.getLook())).findAny().get();
//		System.out.println(animall.getSize());
//
//		animals.forEach(anii -> print(anii.getLook()));
//		// animals.forEach(System.out::prntln);
//
//		new Thread(new Runnable() {
//			String ss = "snos";
//
//			@Override
//			public void run() {
//				String ss = "snas";
//				print(ss);
//				print(this.ss);
//			}
//		}).start();
//
//		new Thread(() -> {
//			// Below line gives compilation error
//			// String variable = "Run Method Variable"
//			System.out.println("->" + "as");
//			System.out.println("->" + "sa");
//		}).start();
//
//		/* guava immutablelist */
//		ImmutableList<Integer> immutableList = ImmutableList.of(34, 23, 545);
//		CollectionPrint(immutableList);
//		/* guava file */
//		File file = new File("D:/xx.txt");
//		List<String> lineList = Files.readLines(file, Charsets.UTF_8);
//		CollectionPrint(lineList);
//		/* guava int compare */
//		int[] ints = Ints.concat(new int[] { 34234, 32, 2434 }, new int[] { 4545, 435565, 3343 });
//		Arrays.asList(ints);
//		for (int i = 0; i < ints.length; i++) {
//			print(String.valueOf(ints[i]));
//		}
//		String inttt = Joiner.on(";").join(Ints.asList(ints));
//		print(inttt);
//		CollectionPrint(Arrays.asList(Splitter.on(";").split(inttt)));
//
//		Map<String, Animal> aMap = Maps.uniqueIndex(animals, new Function<Animal, String>() {
//
//			@Override
//			public String apply(Animal input) {
//				return input.getLook();
//			}
//		});
//
////		printMap(aMap);
//
//		print("seperator");
//		Map<String, Animal> bMap = list2Map(animals, "look");
////		printMap(bMap);
//
//		// print(aMap.getClass().get);
//
//		print(StringUtils.substringMatch("医院银行商场菜市场", 0, "市场"));
//
//		Matcher matcher = Pattern.compile("(医院)").matcher("34334");
//		print(matcher.find());
//		print("医院银行商场菜市场".contains(StringUtils.trimAllWhitespace("") ));
//
//		Map<String,String> map = Maps.newHashMap();
//		map.put("1", "s1");
//		map.put("2", "s2");
//		map.put("3", "s3");
//
//		Predicate<String> p = new Predicate<String>(){
//
//			@Override
//			public boolean apply(String input) {
//				if(input.equals("s1")){
//					return true;
//				}
//				return false;
//			}
//
//		};
//		map = Maps.filterValues(map, p);
//
//		printMap(map);
//		print(new Double(null));
//
////		List<Integer> integers = Lists.newArrayList(1,2,3,4,5,6,7,8,9);
////		List<Integer> integers2 = Lists.transform(integers, new Function<Integer, Integer>() {
////
////			@Override
////			public Integer apply(Integer i) {
////				if(i>5)
////				return null;
////			}
////		});
//
//	}
//
//	/**
//	 * @param map
//	 */
//	private static void printMap(Map<String, String> map) {
//		for (java.util.Map.Entry<String, String> entry : map.entrySet()) {
//			print(entry.getKey());
//			print(entry.getValue());
//		}
//	}
//
//	/**
//	 * @param s
//	 */
//	private static void print(Object s) {
//		System.out.println(s);
//	}
//
//	/**
//	 * @param collection
//	 */
//	private static <T> void CollectionPrint(Collection<T> collection) {
//		collection.forEach(t -> print(t.toString()));
//	}
//
//	/**
//	 * @param vList
//	 * @param fieldNm
//	 * @return
//	 */
//	private static <K, V> Map<K, V> list2Map(List<V> vList, String fieldNm) {
//
//		// Class.forName(V);
//		Map<K, V> map = Maps.uniqueIndex(vList, new Function<V, K>() {
//
//			@SuppressWarnings("unchecked")
//			@Override
//			public K apply(V input) {
//				K k = null;
//
//				try {
//					Field field = input.getClass().getDeclaredField(fieldNm);
//					Field.setAccessible(new Field[] { field }, true);
//					k = (K) field.get(input);
//				} catch (Exception e) {
//					e.printStackTrace();
//				}
//				return k;
//			}
//
//		});
//		return map;
//
//	}
//
//}
